home *** CD-ROM | disk | FTP | other *** search
/ CD Ware Multimedia 1998 February / CD WARE MULTIMEDIA (02-1998) CD++.iso / Encript / TEXTO / TEXTO.TXT < prev   
Encoding:
Text File  |  1997-12-18  |  7.0 KB  |  141 lines

  1. ------------------------------------
  2.    TEXTO - Text steganography
  3. ------------------------------------
  4.  
  5.    Texto is a rudimentary text steganography program which transforms
  6. uuencoded or pgp ascii-armoured ascii data into English sentences.
  7.  
  8.    This program was written to facilitate the exchange of binary 
  9. data, especially encrypted data.  Why is this necessary?  People or
  10. programs may be reading your mail.  Recent events in the US congress may 
  11. _require_ Internet Service Providers to monitor incoming mail and determine 
  12. whether or not it is "obscene" or lives up to particular parochial moral 
  13. standards.  Since they can't scan the contents of an encrypted message, 
  14. and probably don't have time to manually look at each uuencoded message, 
  15. such emails will probably go into the bit bucket.  This program's output
  16. is hopefully close enough to normal English text that it will slip by
  17. any kind of automated scanning.
  18.    
  19.    Texto text files look like something between mad libs and bad poetry,
  20. (although they do sometimes contain deep cosmic truths) and should be close
  21. enough to normal english to get past simple-minded mail scanners and to
  22. entertain readers of talk.bizarre.
  23.  
  24.    Texto works just like a simple substitution cipher, each of the 64 ascii 
  25. symbols used by pgp ascii armour or uuencode is replaced by an english word.  
  26. Not all of the words in the resulting English are significant, only those 
  27. nouns, verbs, adjectives, and adverbs used to fill in the preset sentence
  28. structures.  Punctuation and "connecting" words (or any other words not in 
  29. the dictionary) are ignored.
  30.  
  31.    The obvious main drawback to using this program: the resulting text
  32. is larger than the original data by a factor of 10.  This is bad to the
  33. point of uselessness if you need to send a 5MB uuencoded file.  What
  34. are some possible solutions to this problem?  Using shorter words would 
  35. yield only minimal improvement as most of the words are pretty short now,
  36. and you would still need the same number of english words.  The best 
  37. solution I can think of is to use more words, one for every 2 symbols 
  38. instead of a one-to-one symbol to word mapping.  This requires 4096 words 
  39. for each part of speech, (finding that many adverbs will be a real challenge), 
  40. but search speed shouldn't become a big factor when transforming text to data,
  41. since texto uses a hash table for the words and their lengths in order to
  42. minimize search times.  The net result would probably be an average expansion 
  43. by ~5x instead of ~10x, which is significant enough to warrant trying it.
  44. Changing the code will be easy, the hard part is typing in the dictionaries.
  45. Look for this feature in texto 2.0 coming Real Soon to a net near you.
  46.  
  47.    Since words are occasionally pluralized and/or gerundized (-ing), and
  48. they're not all regular verbs/nouns, there are plenty of strange spelling
  49. mistakes.  While normally I despise misspelled words, they add a nice
  50. human touch to the repetitive text, and add to the feeling that who/whatever
  51. wrote the text was quite clearly out of his/her/its mind.  
  52.  
  53.  
  54. Usage:
  55. ------
  56.    
  57. texto msgfile > engfile         - Transforms the contents of msgfile into 
  58.                                   English text and places results in "engfile"
  59.                                   msgfile must be a uuencoded or pgp ascii-
  60.                                   armoured text file.
  61.  
  62. texto -p engfile > pgpfile      - Takes English text from engfile and produces
  63. OR                                a pgp ascii-armoured text file, which will 
  64. texto -p engfile | pgp -f         be readable by pgp if the original message 
  65.                                   file was.  Alternatively, the output from
  66.                                   texto can be piped directly into pgp.
  67.  
  68. texto -u engfile > uufile      - Takes English text from engfile and produces
  69. OR                                a uuencoded file, which will be readable by
  70. texto -u engfile | uudecode       uuencode if the original message file was.  
  71.                                   Alternatively, the output from texto can 
  72.                                   be piped directly into uudecode.  
  73.                                   NOTE that uudecoding the results will always 
  74.                                   produce a file called "texto.out" mode 644, 
  75.                                   unless you redirect texto's output into a 
  76.                                   file and hand edit that file.
  77.  
  78. Installation:
  79. -------------
  80.  
  81.    This program has only been tested on IRIX 4.0.5, linux kernel 1.0.x, 
  82. and Solaris 2.3.  To build it, just type "make", on SGIs make it with the 
  83. command "make sgi".  If you're on a Solaris machine or any other machine 
  84. whose uuencode uses spaces instead of ` characters, uncomment the
  85. "DEFINES" line in the makefile.
  86.  
  87.  
  88. Rolling your own:
  89. -----------------
  90.  
  91.    The usually-correct English sentence structures are found in the file 
  92. "structs", which is basically a file of mad lib-type "fill in the blank"
  93. sentences.  Feel free to add your own, just be really really careful about
  94. not using words in the "words" file.  You're safe if you use words that
  95. you see elsewhere in the "structs" file.  Using varying "structs" files
  96. could at least annoy mail scanners.  Using different "words" files as
  97. well should totally defeat them.
  98.  
  99.    The 64 verbs, 64 adjectives, 64 adverbs, 64 places, and 64 things 
  100. which are used to fill in the blanks are in the "words" file.  Again, feel
  101. free to add your own, but again, be careful.  Don't use words that end in 
  102. "s" or "ing" (they'll get chopped), don't use words that are already in 
  103. there (you can double check with the command "sort words | uniq -d"). The 
  104. order of the words in each section of the file is also significant, so for 
  105. example rearranging the nouns will change the result.
  106.  
  107.    If you use a modified "words" file, the person on the other end of 
  108. your communication must of course be using the same one, or the transformation 
  109. will fail miserably.  The "structs" file is totally irrelevant however, and
  110. can be modified to suit your taste or literary style, so long as it doesn't
  111. conflict with the "words" file as mentioned above.  The structs file is
  112. not used in "decoding" text, so two people can still communicate whether
  113. or not they have the same "structs" file.
  114.  
  115. BUGS
  116. ----
  117.  
  118.    uuencoded files lose the mode and filename information, which is a bummer.
  119.    Always writing to stdout may not be the best way to go.
  120.    The text produced by texto'ing a uuencoded file can be _really_ repetitive.
  121.    The 64-word dictionaries thing vs. the 4096-word ones, as mentioned above.
  122.    Texto is a dorky name, but it sortof rhymes with stego.
  123.    Please report any other bugs or fixes to kmaher@ucsd.edu
  124.  
  125. LICENSE
  126. -------
  127.  
  128.    Copying, modifications, improvements, etc. are highly encouraged, just
  129.    let me know so I can incorporate them.
  130.  
  131.    All rites reversed.
  132.  
  133. AUTHOR
  134. ------
  135.    
  136.    Kevin Maher
  137.    kmaher@ucsd.edu
  138.    Underware Software Production Ltd. Inc. etc. 
  139.    "Covering your ass since 1981"
  140.  
  141.